home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Graphics / GraphicsWorkshop / Source / Converters / xbm.h < prev    next >
Text File  |  1992-05-11  |  6KB  |  183 lines

  1. /*
  2.  * XBM Converter
  3.  *
  4.  * Supports:    init, free, readFromStream:from, write:toStream:from, getFormatName.
  5.  *
  6.  * Reads and writes XBM files as defined by the X constortium.
  7.  */
  8.  
  9. #ifndef __XBMCONVERT__
  10. #define __XBMCONVERT__
  11.  
  12. #import <Converter.h>
  13.  
  14. #define CONVERT_ERR_NONE        0
  15. #define CONVERT_ERR_WARNING    1
  16. #define CONVERT_ERR_FATAL        2
  17.  
  18. #define ERROR_NO_ERROR            0
  19. #define ERROR_UNABLE_TO_OPEN    1
  20. #define ERROR_PERMISSION_DENIED    2
  21. #define ERROR_BAD_FORMAT        3
  22. #define ERROR_TRUNCATED_FILE    4
  23. #define ERROR_NEEDSWINDOWSERV    5
  24. #define ERROR_UNABLETOLINK        6
  25. #define ERROR_UNKNOWN            7
  26.  
  27. @interface XBM : Converter
  28. {
  29. }
  30.  
  31. /*
  32.  * Initializes the object.
  33.  * Assumes:     Nothing
  34.  * Returns:    self
  35.  * Results:    In this converter, no action is taken.
  36.  */
  37. - init;
  38.  
  39. /*
  40.  * Frees nothing.
  41.  * Assumes:    Object has been instantiated.
  42.  * Results:     It is no longer valid to message the object.
  43.  */
  44. - free;
  45.  
  46. /*
  47.  * Reads an xbm file from stream. 
  48.  * Assumes:    The object has been instantiates, stream is an valid stream opened for at least
  49.  *            reading. Sender is the id of whatever object is calling the converter. It also
  50.  *            assumes that stream points to a valic XBM file, however, it won't stress if
  51.  *            it can't read the file.
  52.  * Returns:    id of an NXBitmapImageRep or nil if the image was unable to be read.
  53.  */
  54. - readFromStream: (NXStream *)stream from: sender;
  55.  
  56. /*
  57.  * Write the bitmaps id to stream.
  58.  * Assumes:    Object has been instantiated. At times, it's best to have used a call to the
  59.  *             save panel first, since this can set internal variables, but it's not necessary.
  60.  *            stream should be a valid NXStream opened for at least writing. Sender should
  61.  *            be the id of the caller. id is a NXBitmapImageRep, or something that responds
  62.  *            to all the message of the NXBitmapImageRep.
  63.  * Returns:    YES if the image was sucessfully writing, otherwise it returns NO.
  64.  * Results:    On success, a valid XBM file is written to the output stream.
  65.  */
  66. - (BOOL)write: (id)image toStream: (NXStream *)stream from: sender;
  67.  
  68. /*
  69.  * Reads nothing. Not supported in this module.
  70.  * Assumes:     Object instantiated.
  71.  * Returns:    nil
  72.  */
  73. - readAllFromStream: (NXStream *)stream from: sender;
  74.  
  75. /*
  76.  * Write nothing. Not supported in this module.
  77.  * Assumes:     Object instantiates.
  78.  * Returns:    NO
  79.  */
  80. - (BOOL)writeAll: (id)image toStream: (NXStream *)stream;
  81.  
  82. /*
  83.  * Nothing created in this module. 
  84.  * Assumes:     Object instantiated.
  85.  * Returns:    nil
  86.  */
  87. - customSaveView: (int)width;
  88.  
  89. /*
  90.  * This is very similar to customSaveView, however, it is used to set parameters for
  91.  * the run time loading of images. This object does not support input custom views.
  92.  * Assumes:     Object instantiated and the window server is running. width should be the
  93.  *            maximum width the custom view can be.
  94.  * Returns:    id of a parent view or nil if this object doesn't use one.
  95.  */
  96. - customOpenView: (int)width;
  97.  
  98. /*
  99.  * Returns the name of the current format.
  100.  * Assumes:     Object has been instantiated.
  101.  * Returns:    A pointer to the string, "X11 Portable Bitmap (XBM)". The caller should 
  102.  *            always use something like strcpy to get a copy of the string, since it's life 
  103.  *            is only guaranteed for the life of the object.
  104.  */
  105. - (char *)getFormatName;
  106.  
  107. /*
  108.  * Does nothing in this module.
  109.  * Assumes:    The converter is instantiated.
  110.  * Returns:    NO
  111.  */
  112.  - (BOOL)setCustomParameter: (const char *)parameter withValue: (void *)ptr;
  113.  
  114. /*
  115.  * Does nothing under this converter.
  116.  * Assumes:     The converter is instantiate.
  117.  * Returns:    NO
  118.  */
  119.  - (void *)getCustomParameter: (const char *)parameter;
  120.  
  121.  /*
  122.   * Returns a string with copyright information, name of the author, where the author
  123.   * can be reached, etc. This should only be a couple of lines, so keep it short and 
  124.   * sweet. An example might be:
  125.   * "My Image Format Converter\nby Joe Programmer\nCopyright R'N'R Software\n ...
  126.   * ... email bugs to jprogramm@system.there.edu"
  127.   * Assumes:     Converter linked and instantiated.
  128.   * Returns:    A pointer to a null terminated string. This string must be non volatile for
  129.   *             the life of the converter. Ie, as long as the programmer keeps a converter
  130.   *            linked, the pointer should be valid.
  131.   */
  132.  - (char *)copyrightNotice;
  133.  
  134.  /*
  135.   * Returns the current error state of the converter.
  136.   * Assumes:     Converter has been instantiated.
  137.   * Returns:    0 = CONVERT_ERR_NONE         Signals no error
  138.   *            1 = CONVERT_ERR_WARNING   Signals action taken, but not one expected.
  139.   *            2 = CONVERT_ERR_FATAL          Signals no action taken.
  140.   */
  141.  - (int)errorState;
  142.  
  143.  /*
  144.   * Returns an int describing the current error message.
  145.   * Assumes:    Converter instantiated.
  146.   * Returns:    An int describing the error type. See defines for integers returned.
  147.   */
  148.  - (int)errorMessage;
  149.  
  150.  /*
  151.   * This provides support for non standard error messages. It's preferable for programmers
  152.   * to avoid this message, but in special cases where you need to express something unique,
  153.   * it is appropiate. Just remember, that the use of this message disables multilingual
  154.   * support.
  155.   * Assumes:    Converter Instantiated
  156.   * Returns:    NULL terminated string describing the error.
  157.   */
  158.  - (char *)errorStringMessage;
  159.  
  160.  /*
  161.   * This method returns YES if the converter requires the window server. Ideally, converters
  162.   * should not depend on the window server, but sometimes this cannot be avoided. For 
  163.   * example, a programmer wouldn't be expect to write a PostScript interpreter just to read
  164.   * in eps files. Note, however, that returning YES will result in the converter not working
  165.   * with command line versions of applications.
  166.   * Assumes:    Converter Instantiated
  167.   * Returns:    YES is window server is needed, NO otherwise.
  168.   */
  169. - (BOOL)needsWindowServer;
  170.  
  171. /*
  172.  * Returns a string in the form <major version>.<minor version>. This is used by 
  173.  * the calling program to see what level or protocol the object will respond to. 
  174.  * Assumes:    Converter instantiated.
  175.  * Returns:    A null terminated string in the form <major version>.<minor version>.
  176.  *            For example, 1.0.
  177.  */
  178. - (char *)protocolVersion;
  179.  
  180. @end
  181.  
  182. #endif
  183.